home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Technotools
/
Technotools (Chestnut CD-ROM)(1993).ISO
/
database
/
laserpro
/
laserpro.prg
< prev
next >
Wrap
Text File
|
1991-05-26
|
11KB
|
309 lines
* Program-id.....: LaserPro.PRG
* Author.........: Pinter Consulting Staff (Originally LASERLIB.PRG)
* Revised........: 2/28/91 by Richard Elliott, Ferret Software
* Purpose........: HP LaserJet II Procedure Library for Foxpro
* Usage..........: SET PROCEDURE TO LaserPro
* ---------------------------------------------------------
PROCEDURE Init_Print
* PRINTER CONTROL VARIABLES
* Usage: ??? variable_name
* DO Init_Print first to set global variables
PUBLIC ESC, reset, clearfonts, portrait, landscape, uline_on, uline_off, pop, push
PUBLIC bold_on, bold_off, ital_on, ital_off, courier, lineprint
PUBLIC sym_pc8, sym_pc8dn, sym_pc850, sym_rm8, sym_ecma
PUBLIC pitch_10, pitch_12, pitch_17, tmargin, lmargin, printport
ESC = CHR(27)
reset = ESC + 'E' && Reset printer
clearfonts = ESC + '*c0F' && Clear ALL fonts
portrait = ESC + "&l0O" && Portrait page orientation
landscape = ESC + "&l1O" && Landscape page orientation
uline_on = ESC + "&d1D" && Underline, fixed, on
uline_off = ESC + "&d@" && Underline off
pop = ESC + "&f1S"
push = ESC + "&f0S"
bold_on = ESC + "(s3B" && Bold type
bold_off = ESC + "(s0B" && Normal type
ital_on = ESC + "(s1S" && Italics on
ital_off = ESC + "(s0S" && Normal upright font
courier = ESC + "(s3T" && Courier typeface
lineprint = ESC + "(s0T" && Lineprinter typeface
sym_pc8 = ESC + "(10U" && PC-8 symbol set
sym_pc8dn = ESC + "(11U" && PC-8DN symbol set
sym_pc850 = ESC + "(12U" && PC-850 symbol set
sym_rm8 = ESC + "(8U" && ROMAN-8 symbol set
sym_ecma = ESC + "(0N" && ECMA symbol set
pitch_10 = ESC + "(s10h12V" && Includes 12 point height
pitch_12 = ESC + "(s12h10V" && Includes 10 point height
pitch_17 = ESC + "(s16.66h8.5V" && Includes 8.5 point height
** SYSTEM PRINTING VARIABLES
tmargin = 0 && In inches, change as needed
lmargin = 0 && In inches, change as needed
printport = "LPT1" && Assign default printer port
RETURN
* ---------------------------------------------------------
FUNCTION Box
PARAMETERS top_row , bottom_row, left_col, right_col , _thick
** Use as: ??? BOX(top_row, botom_row, left_col, right_col, thickness)
** First four parameters are in inches from top or left of page.
** The last parameter is thickness in decipoints (720 decipoints = 1 inch!)
_height = (bottom_row - top_row ) && determine line lengths
_width = (right_col - left_col) + (_thick/720) && Adjustment for corner
top_ = HLINE( top_row , left_col , _width , _thick )
left_ = VLINE( top_row , left_col , _height , _thick )
bottom_ = HLINE( bottom_row , left_col , _width , _thick )
right_ = VLINE( top_row , right_col , _height , _thick )
RETURN top_ + left_ + bottom_ + right_
* ---------------------------------------------------------
FUNCTION Copies
PARAMETERS num_copies
** Use as: ??? COPIES(number_of_copies)
RETURN ESC+"&l"+ALLTRIM(STR(num_copies))+"X"
* ---------------------------------------------------------
FUNCTION Internal
PARAMETERS _font
** Use as: ??? INTERNAL(font_number)
** Modify to add any other internal font available
DO CASE
CASE _font = 1 && PORTRAIT COURIER
string_= portrait+ESC+"(10U"+ESC+"(s0p10h12v0s0b3T"
CASE _font = 2 && PORTRAIT COMPRESSED
string_= portrait+ESC+"(10U"+ESC+"(s0p16.66h8.5v0s0b0T"
CASE _font = 3 && PORTRAIT BOLD
string_= portrait+ESC+"(10U"+ESC+"(s0p10h12v0s3b3T"
CASE _font = 4 && LANDSCAPE COURIER
string_= landscape+ESC+"(10U"+ESC+"(s0p10h12v0s0b3T"
CASE _font = 5 && LANDSCAPE COMPRESSED
string_= landscape+ESC+"(10U"+ESC+"(s0p16.66h8.5v0s0b0T"
CASE _font = 6 && LANDSCAPE BOLD
string_= landscape+ESC+"(10U"+ESC+"(s0p10h12v0s3b3T"
ENDCASE
RETURN string_
* ---------------------------------------------------------
FUNCTION Lpi
PARAMETERS lpi_num
** Use as: ??? LPI(lpi_number)
RETURN ESC + '&l' + ALLTRIM(STR(lpi_num)) + 'D'
* ---------------------------------------------------------
FUNCTION VLine
PARAMETERS _line , _col , _len , _thick
** Use as: ??? VLINE(start_line_number, start_column_number, length, thickness)
** Line, column and length number are in inches
** Top line is 0, to column is 0
line_ = STR(( 720 * (_line + tmargin )) , 4 ) && Les has a 75 dot adjustment
col_ = STR(( 720 * (_col + lmargin )) , 4 ) && I removed and use margin vars.
len_ = STR(( 720 * _len ) , 4 ) && Pesonal preference, I prefer
thick_ = STR( _thick , 4 ) && absolute measures where possible
curs_ = ESC + '&a' + line_ + "v" + col_ + "H"
spec_ = ESC + "*c" + len_ + "v" + thick_ + "H"
prin_ = ESC + "*c" + "0P"
RETURN curs_ + spec_ + prin_
* ---------------------------------------------------------
FUNCTION HLine
PARAMETERS _line , _col , _len , _thick
** Use as: ??? HLINE(start_line_number, start_column_number, length, thickness)
line_ = STR(( 720 * _line ) , 4 ) && Convert inches to decipoints
col_ = STR(( 720 * _col ) , 4 ) && etc.
len_ = STR(( 720 * _len ) , 4 ) && etc.
thick_ = STR( _thick , 4 )
curs_ = ESC + "&a" + line_ + "v" + col_ + "H"
spec_ = ESC + "*c" + thick_ + "v" + len_ + "H"
prin_ = ESC + "*c" + "0P"
RETURN curs_ + spec_ + prin_
* ---------------------------------------------------------
FUNCTION Grid
PARAMETERS top_row , bottom_row, left_col, right_col , _grid
** Use as: ??? GRID(top_row_start, bottom_row_start, left_column, ;
** right_column, type_of_grid)
**
** Avilable grid types: 1 = Horizontal lines
** 2 = Vertical lines
** 3 = Diagonal lines 1
** 4 = Diagonal lines 2
** 5 = Square grid
** 6 = Diagonal grid
** See BOX() explanation for more info
_height = (bottom_row - top_row )
_width = (right_col - left_col)
_row_ = LTRIM(STR((( top_row + tmargin ) * 720 ) , 4 ))
_col_ = LTRIM(STR((( left_col + lmargin ) * 720 ) , 4 ))
_high_ = LTRIM(STR(( _height * 720 ) , 4 ))
_len_ = LTRIM(STR(( _width * 720 ) , 4 ))
loc_ = ESC + "&a" + _row_ + "v" + _col_ + "H"
info_ = ESC + "*c" + _high_ + "v" + _len_ + "H"
grid_ = ESC + "*c" + STR(_grid,2) + "G"
last_ = ESC + "*c" + "3P"
RETURN loc_ + info_ + grid_ + last_
* ---------------------------------------------------------
FUNCTION Shading
PARAMETERS top_row , bottom_row, left_col, right_col , _shading
** Use as: ??? SHADING(top_row_start, bottom_row_start, left_column, ;
** right_column, %_shading)
_height = (bottom_row - top_row )
_width = (right_col - left_col)
_row_ = LTRIM(STR((( top_row + tmargin ) * 720 ) , 4 ))
_col_ = LTRIM(STR((( left_col + lmargin ) * 720 ) , 4 ))
_high_ = LTRIM(STR(( _height * 720 ) , 4 ))
_len_ = LTRIM(STR(( _width * 720 ) , 4 ))
loc_ = ESC + "&a" + _row_ + "v" + _col_ + "H"
info_ = ESC + "*c" + _high_ + "v" + _len_ + "H"
shad_ = ESC + "*c" + STR(_shading,2) + "G"
last_ = ESC + "*c" + "2P"
RETURN loc_ + info_ + shad_ + last_
* ---------------------------------------------------------
FUNCTION SoftFont
PARAMETERS _font_
** Use as: ??? SOFTFONT(font_id_number)
** Fonts must be preloaded with FontLoad() or external program
RETURN ESC + "(" + RIGHT(STR(100000+_font_,6),5) + "X"
* ---------------------------------------------------------
FUNCTION FontLoad
PARAMETERS font_name,_font_,print_port
** Use as: ??? FONTLOAD(font_file,font_id_number,printer_port)
??? ESC + "*c" + RIGHT(STR(100000+_font_,6),5) + "D" &&
!COPY &font_name /B &print_port /B > nul && font_name may include path
??? ESC + "*c5F" && Make font "permanent"
RETURN ''
* ---------------------------------------------------------
FUNCTION SayIt
PARAMETERS _down , _over , _text, _pict
** Use as: ??? SayIt(inches_down, inches_over, text_to_print, picture_clause)
_type = TYPE("_text")
DO CASE
CASE _type = "C" .OR. _type = "D" .OR. _type = "L"
DO CASE
CASE _type = "D"
text_ = DTOC(_text)
CASE _type = "L"
IF _text
text_ = "Y"
ELSE
text_ = "N"
ENDIF
OTHERWISE
text_ = _text
ENDCASE
CASE _type = "N"
text_ = LTRIM(TRANSFORM(_text,_pict))
OTHERWISE
text_ = 'TYPE ERROR'
ENDCASE
_row = STR(( 720 * ( _down + tmargin )) , 4 )
_col = STR(( 720 * ( _over + lmargin )) , 4 )
RETURN ESC + "&a" + _row + "v" + _col + "H" + text_
* ---------------------------------------------------------
FUNCTION MacroID
PARAMETERS id_
** Use as: ??? MACROID(macro_id_number)
RETURN ESC + "&f" + LTRIM(STR(id_,10)) + CHR(89)
* ---------------------------------------------------------
FUNCTION MacroCtl
PARAMETERS func_
*0 Start macro definition
*1 Stop macro definition
*2 Execute macro
*3 Call macro
*4 Enable auto overlay
*5 Disable auto overlay
*6 Delete all macros
*7 Delete all temp macros
*8 Delete macro
*9
*10 Make macro perm
RETURN ESC + "&f" + LTRIM(STR(func_,10)) + CHR(88)
* ---------------------------------------------------------
PROCEDURE LineLoop
PARAMETERS LineMax, StartLine, StartCol, LineWidth, _Lpi
** Use as: DO LineLoop WITH max_lines, start_line, start_column,
** line_width, lines_per_inch
i = 1
height_ = ROUND(1/_lpi,3)
DO WHILE (i*height_) <= LineMax
??? HLINE ( ( (i*height_) + StartLine) , StartCol , LineWidth, 1 )
i = i + 1
ENDDO
RETURN
* ---------------------------------------------------------